<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN"><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-us">
<title>simIK API</title>
<link rel="stylesheet" type="text/css" href="../../helpFiles/style.css">
<script type="text/javascript">
//
function getParameterByName(name, url = window.location.href)
{
    name = name.replace(/[\[\]]/g, '\\$&');
    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
        results = regex.exec(url);
    if(!results) return null;
    if(!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
//
                </script><style type="text/css">
td.section { margin: 0; padding: 0; }
                </style></head>
<body>
<div align="center"><table class="allEncompassingTable">

<tr><td id="title" class="section"><h1>IK plugin API reference</h1></td></tr>
<tr><td id="info" class="section"><p class="infoBox">API functions for creating kinematics tasks. All units, unless otherwise indicated, are specified in meters and radians.</p></td></tr>

<tr><td id="alphabetical" class="section"><pre class="lightGreyBox">
<a href="?#simIK.addIkElement">simIK.addIkElement</a>
<a href="?#simIK.addIkElementFromScene">simIK.addIkElementFromScene</a>
<a href="?#simIK.applyIkEnvironmentToScene">simIK.applyIkEnvironmentToScene</a>
<a href="?#simIK.applySceneToIkEnvironment">simIK.applySceneToIkEnvironment</a>
<a href="?#simIK.computeJacobian">simIK.computeJacobian</a>
<a href="?#simIK.createEnvironment">simIK.createEnvironment</a>
<a href="?#simIK.createDummy">simIK.createDummy</a>
<a href="?#simIK.createIkGroup">simIK.createIkGroup</a>
<a href="?#simIK.createJoint">simIK.createJoint</a>
<a href="?#simIK.doesObjectExist">simIK.doesObjectExist</a>
<a href="?#simIK.doesIkGroupExist">simIK.doesIkGroupExist</a>
<a href="?#simIK.duplicateEnvironment">simIK.duplicateEnvironment</a>
<a href="?#simIK.eraseEnvironment">simIK.eraseEnvironment</a>
<a href="?#simIK.eraseObject">simIK.eraseObject</a>
<a href="?#simIK.generatePath">simIK.generatePath</a>
<a href="?#simIK.getAlternateConfigs">simIK.getAlternateConfigs</a>
<a href="?#simIK.getConfigForTipPose">simIK.getConfigForTipPose</a>
<a href="?#simIK.getIkElementBase">simIK.getIkElementBase</a>
<a href="?#simIK.getIkElementConstraints">simIK.getIkElementConstraints</a>
<a href="?#simIK.getIkElementFlags">simIK.getIkElementFlags</a>
<a href="?#simIK.getIkElementPrecision">simIK.getIkElementPrecision</a>
<a href="?#simIK.getIkElementWeights">simIK.getIkElementWeights</a>
<a href="?#simIK.getIkGroupCalculation">simIK.getIkGroupCalculation</a>
<a href="?#simIK.getIkGroupFlags">simIK.getIkGroupFlags</a>
<a href="?#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a>
<a href="?#simIK.getJacobian">simIK.getJacobian</a>
<a href="?#simIK.getJointDependency">simIK.getJointDependency</a>
<a href="?#simIK.getJointIkWeight">simIK.getJointIkWeight</a>
<a href="?#simIK.getJointInterval">simIK.getJointInterval</a>
<a href="?#simIK.getJointMatrix">simIK.getJointMatrix</a>
<a href="?#simIK.getJointMaxStepSize">simIK.getJointMaxStepSize</a>
<a href="?#simIK.getJointMode">simIK.getJointMode</a>
<a href="?#simIK.getJointPosition">simIK.getJointPosition</a>
<a href="?#simIK.getJointScrewPitch">simIK.getJointScrewPitch</a>
<a href="?#simIK.getJointTransformation">simIK.getJointTransformation</a>
<a href="?#simIK.getJointType">simIK.getJointType</a>
<a href="?#simIK.getLinkedDummy">simIK.getLinkedDummy</a>
<a href="?#simIK.getManipulability">simIK.getManipulability</a>
<a href="?#simIK.getObjectHandle">simIK.getObjectHandle</a>
<a href="?#simIK.getObjectMatrix">simIK.getObjectMatrix</a>
<a href="?#simIK.getObjectParent">simIK.getObjectParent</a>
<a href="?#simIK.getObjects">simIK.getObjects</a>
<a href="?#simIK.getObjectTransformation">simIK.getObjectTransformation</a>
<a href="?#simIK.handleIkGroup">simIK.handleIkGroup</a>
<a href="?#simIK.load">simIK.load</a>
<a href="?#simIK.save">simIK.save</a>
<a href="?#simIK.setIkElementBase">simIK.setIkElementBase</a>
<a href="?#simIK.setIkElementConstraints">simIK.setIkElementConstraints</a>
<a href="?#simIK.setIkElementFlags">simIK.setIkElementFlags</a>
<a href="?#simIK.setIkElementPrecision">simIK.setIkElementPrecision</a>
<a href="?#simIK.setIkElementWeights">simIK.setIkElementWeights</a>
<a href="?#simIK.setIkGroupCalculation">simIK.setIkGroupCalculation</a>
<a href="?#simIK.setIkGroupFlags">simIK.setIkGroupFlags</a>
<a href="?#simIK.setJointDependency">simIK.setJointDependency</a>
<a href="?#simIK.setJointIkWeight">simIK.setJointIkWeight</a>
<a href="?#simIK.setJointInterval">simIK.setJointInterval</a>
<a href="?#simIK.setJointMaxStepSize">simIK.setJointMaxStepSize</a>
<a href="?#simIK.setJointMode">simIK.setJointMode</a>
<a href="?#simIK.setJointPosition">simIK.setJointPosition</a>
<a href="?#simIK.setJointScrewPitch">simIK.setJointScrewPitch</a>
<a href="?#simIK.setLinkedDummy">simIK.setLinkedDummy</a>
<a href="?#simIK.setObjectMatrix">simIK.setObjectMatrix</a>
<a href="?#simIK.setObjectParent">simIK.setObjectParent</a>
<a href="?#simIK.setObjectTransformation">simIK.setObjectTransformation</a>
<a href="?#simIK.setSphericalJointMatrix">simIK.setSphericalJointMatrix</a>
<a href="?#simIK.setSphericalJointRotation">simIK.setSphericalJointRotation</a></pre></td></tr>

<tr><td id="category" class="section">

<h3 class=subsectionBar><a name="environment"></a>Environment functions and helpers</h3>
<pre class=lightGreyBox>
<a href="?#simIK.createEnvironment">simIK.createEnvironment</a>
<a href="?#simIK.eraseEnvironment">simIK.eraseEnvironment</a>
<a href="?#simIK.duplicateEnvironment">simIK.duplicateEnvironment</a>
<a href="?#simIK.save">simIK.save</a>
<a href="?#simIK.load">simIK.load</a>
<a href="?#simIK.addIkElementFromScene">simIK.addIkElementFromScene</a>
<a href="?#simIK.applyIkEnvironmentToScene">simIK.applyIkEnvironmentToScene</a>
<a href="?#simIK.applySceneToIkEnvironment">simIK.applySceneToIkEnvironment</a>
</pre>


<h3 class=subsectionBar><a name="objects"></a>Objects</h3>
<pre class=lightGreyBox>
<a href="?#simIK.getObjects">simIK.getObjects</a>
<a href="?#simIK.getObjectHandle">simIK.getObjectHandle</a>
<a href="?#simIK.doesObjectExist">simIK.doesObjectExist</a>
<a href="?#simIK.eraseObject">simIK.eraseObject</a>
<a href="?#simIK.getObjectParent">simIK.getObjectParent</a>
<a href="?#simIK.setObjectParent">simIK.setObjectParent</a>
<a href="?#simIK.getObjectTransformation">simIK.getObjectTransformation</a>
<a href="?#simIK.setObjectTransformation">simIK.setObjectTransformation</a>
<a href="?#simIK.getObjectMatrix">simIK.getObjectMatrix</a>
<a href="?#simIK.setObjectMatrix">simIK.setObjectMatrix</a>
</pre>


<h3 class=subsectionBar><a name="dummies"></a>Dummies</h3>
<pre class=lightGreyBox>
<a href="?#simIK.createDummy">simIK.createDummy</a>
<a href="?#simIK.eraseObject">simIK.eraseObject</a>
<a href="?#simIK.getLinkedDummy">simIK.getLinkedDummy</a>
<a href="?#simIK.setLinkedDummy">simIK.setLinkedDummy</a>
</pre>


<h3 class=subsectionBar><a name="joints"></a>Joints</h3>
<pre class=lightGreyBox>
<a href="?#simIK.createJoint">simIK.createJoint</a>
<a href="?#simIK.eraseObject">simIK.eraseObject</a>
<a href="?#simIK.getJointPosition">simIK.getJointPosition</a>
<a href="?#simIK.setJointPosition">simIK.setJointPosition</a>
<a href="?#simIK.getJointMode">simIK.getJointMode</a>
<a href="?#simIK.setJointMode">simIK.setJointMode</a>
<a href="?#simIK.getJointInterval">simIK.getJointInterval</a>
<a href="?#simIK.setJointInterval">simIK.setJointInterval</a>
<a href="?#simIK.getJointDependency">simIK.getJointDependency</a>
<a href="?#simIK.setJointDependency">simIK.setJointDependency</a>
<a href="?#simIK.getJointIkWeight">simIK.getJointIkWeight</a>
<a href="?#simIK.setJointIkWeight">simIK.setJointIkWeight</a>
<a href="?#simIK.getJointMaxStepSize">simIK.getJointMaxStepSize</a>
<a href="?#simIK.setJointMaxStepSize">simIK.setJointMaxStepSize</a>
<a href="?#simIK.getJointScrewPitch">simIK.getJointScrewPitch</a>
<a href="?#simIK.setJointScrewPitch">simIK.setJointScrewPitch</a>
<a href="?#simIK.getJointTransformation">simIK.getJointTransformation</a>
<a href="?#simIK.setSphericalJointRotation">simIK.setSphericalJointRotation</a>
<a href="?#simIK.getJointType">simIK.getJointType</a>
<a href="?#simIK.getJointMatrix">simIK.getJointMatrix</a>
<a href="?#simIK.setSphericalJointMatrix">simIK.setSphericalJointMatrix</a>
</pre>


<h3 class=subsectionBar><a name="ikGroups"></a>IK groups</h3>
<pre class=lightGreyBox>
<a href="?#simIK.createIkGroup">simIK.createIkGroup</a>
<a href="?#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a>
<a href="?#simIK.doesIkGroupExist">simIK.doesIkGroupExist</a>
<a href="?#simIK.getIkGroupFlags">simIK.getIkGroupFlags</a>
<a href="?#simIK.setIkGroupFlags">simIK.setIkGroupFlags</a>
<a href="?#simIK.getIkGroupCalculation">simIK.getIkGroupCalculation</a>
<a href="?#simIK.setIkGroupCalculation">simIK.setIkGroupCalculation</a>
</pre>


<h3 class=subsectionBar><a name="ikElements"></a>IK elements</h3>
<pre class=lightGreyBox>
<a href="?#simIK.addIkElement">simIK.addIkElement</a>
<a href="?#simIK.addIkElementFromScene">simIK.addIkElementFromScene</a>
<a href="?#simIK.getIkElementFlags">simIK.getIkElementFlags</a>
<a href="?#simIK.setIkElementFlags">simIK.setIkElementFlags</a>
<a href="?#simIK.getIkElementConstraints">simIK.getIkElementConstraints</a>
<a href="?#simIK.setIkElementConstraints">simIK.setIkElementConstraints</a>
<a href="?#simIK.getIkElementBase">simIK.getIkElementBase</a>
<a href="?#simIK.setIkElementBase">simIK.setIkElementBase</a>
<a href="?#simIK.getIkElementPrecision">simIK.getIkElementPrecision</a>
<a href="?#simIK.setIkElementPrecision">simIK.setIkElementPrecision</a>
<a href="?#simIK.getIkElementWeights">simIK.getIkElementWeights</a>
<a href="?#simIK.setIkElementWeights">simIK.setIkElementWeights</a>
</pre>


<h3 class=subsectionBar><a name="ikCalculation"></a>IK calculation</h3>
<pre class=lightGreyBox>
<a href="?#simIK.handleIkGroup">simIK.handleIkGroup</a>
<a href="?#simIK.applyIkEnvironmentToScene">simIK.applyIkEnvironmentToScene</a>
<a href="?#simIK.getConfigForTipPose">simIK.getConfigForTipPose</a>
<a href="?#simIK.getAlternateConfigs">simIK.getAlternateConfigs</a>
<a href="?#simIK.computeJacobian">simIK.computeJacobian</a>
<a href="?#simIK.getJacobian">simIK.getJacobian</a>
<a href="?#simIK.getManipulability">simIK.getManipulability</a>
<a href="?#simIK.generatePath">simIK.generatePath</a>
</pre>
</td></tr>

<tr><td id="commands" class="section">
<h3 class="subsectionBar">
<a name="simIK.addIkElement" id="simIK.addIkElement"></a>simIK.addIkElement</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Adds a new IK element to an IK group.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number elementHandle=simIK.addIkElement(number environmentHandle,number ikGroupHandle,number tipDummyHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
<div><strong>tipDummyHandle</strong>: the handle of the dummy object that should act as the tip in the IK element.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet"><div><strong>elementHandle</strong>: the IK element handle in the IK group</div></td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a>, <a href="#simIK.addIkElementFromScene">simIK.addIkElementFromScene</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.addIkElementFromScene" id="simIK.addIkElementFromScene"></a>simIK.addIkElementFromScene</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Convenience function to quickly generate an IK element from a kinematic chain in the scene. Use together with <a href="#simIK.applyIkEnvironmentToScene">simIK.applyIkEnvironmentToScene</a>.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number ikElement,table simToIkObjectMap=simIK.addIkElementFromScene(number environmentHandle,number ikGroup,number baseHandle,number tipHandle,number targetHandle,number constraints)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the IK environment.</div>
<div><strong>ikGroup</strong>: the handle of the IK group, where the IK element should be added.</div>
<div><strong>baseHandle</strong>: the handle of the base object in the scene. Can be -1 if the base of the kinematic chain is not moving nor changing orientation.</div>
<div><strong>tipHandle</strong>: the handle of the tip object in the scene.</div>
<div><strong>targetHandle</strong>: the handle of the target object in the scene.</div>
<div><strong>constraints</strong>: the constraints for the IK element that should be created. Bit-combine following: simIK.constraint_x, simIK.constraint_y, simIK.constraint_z, simIK.constraint_alpha_beta, simIK.constraint_gamma (simIK.constraint_gamma should only be set if simIK.constraint_alpha_beta is also set). For convenience we also have simIK.constraint_position=simIK.constraint_x|simIK.constraint_y|simIK.constraint_z, simIK.constraint_orientation=simIK.constraint_alpha_beta|simIK.constraint_gamma, and simIK.constraint_pose=simIK.constraint_position|simIK.constraint_orientation.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>ikElement</strong>: the handle of the created IK element.</div>
<div><strong>simToIkObjectMap</strong>: the mapping of scene object to IK environment objects.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.applyIkEnvironmentToScene">simIK.applyIkEnvironmentToScene</a>, <a href="#simIK.addIkElement">simIK.addIkElement</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.applyIkEnvironmentToScene" id="simIK.applyIkEnvironmentToScene"></a>simIK.applyIkEnvironmentToScene</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Convenience function to compute and apply inverse kinematic values to the scene. Use together with <a href="#simIK.addIkElementFromScene">simIK.addIkElementFromScene</a>.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number result=simIK.applyIkEnvironmentToScene(number environmentHandle,number ikGroup,bool applyOnlyWhenSuccessful=false)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the IK environment.</div>
<div><strong>ikGroup</strong>: the handle of the IK group.</div>
<div><strong>applyOnlyWhenSuccessful</strong>: whether computed values should only be applied if computation result is simIK.ikresult_success.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>result</strong>: the resolution result, in return. Possible values are simIK.ikresult_not_performed, simIK.ikresult_success, or simIK.ikresult_fail</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.addIkElementFromScene">simIK.addIkElementFromScene</a>,<a href="#simIK.applySceneToIkEnvironment">simIK.applySceneToIkEnvironment</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.applySceneToIkEnvironment" id="simIK.applySceneToIkEnvironment"></a>simIK.applySceneToIkEnvironment</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Convenience function to apply the scene state to its ik environment counterpart. Use together with <a href="#simIK.addIkElementFromScene">simIK.addIkElementFromScene</a>.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.applySceneToIkEnvironment(number environmentHandle,number ikGroup)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the IK environment.</div>
<div><strong>ikGroup</strong>: the handle of the IK group.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.addIkElementFromScene">simIK.addIkElementFromScene</a>,<a href="#simIK.applyIkEnvironmentToScene">simIK.applyIkEnvironmentToScene</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.computeJacobian" id="simIK.computeJacobian"></a>simIK.computeJacobian</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Computes the Jacobian for an IK group.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">bool success=simIK.computeJacobian(number environmentHandle,number ikGroupHandle,number options)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
<div><strong>options</strong>: options flag, bit-coded. bit0 set (i.e. 1): takes joint weights into account.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>success</strong>: whether the Jacobian could successfully be computed.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getJacobian">simIK.getJacobian</a>, <a href="#simIK.getManipulability">simIK.getManipulability</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.createDummy" id="simIK.createDummy"></a>simIK.createDummy</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Creates a dummy object.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number dummyHandle=simIK.createDummy(number environmentHandle,string dummyName='')</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>dummyName</strong>: the name of the dummy.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>dummyHandle</strong>: the handle of the dummy.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.doesObjectExist">simIK.doesObjectExist</a>, <a href="#simIK.createJoint">simIK.createJoint</a>, <a href="#simIK.eraseObject">simIK.eraseObject</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.createEnvironment" id="simIK.createEnvironment"></a>simIK.createEnvironment</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Creates an new IK environment.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number environmentHandle=simIK.createEnvironment()</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>environmentHandle</strong>: the handle of the newly created environment.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.eraseEnvironment">simIK.eraseEnvironment</a>, <a href="#simIK.load">simIK.load</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.createIkGroup" id="simIK.createIkGroup"></a>simIK.createIkGroup</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Creates an IK group.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number ikGroupHandle=simIK.createIkGroup(number environmentHandle,string ikGroupName='')</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupName</strong>: the name of the IK group.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.doesIkGroupExist">simIK.doesIkGroupExist</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.createJoint" id="simIK.createJoint"></a>simIK.createJoint</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Creates a joint object.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number jointHandle=simIK.createJoint(number environmentHandle,string jointName='')</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointName</strong>: the name of the joint.</div>
<div><strong>jointType</strong>: the type of the joint. Supported types are simIK.jointtype_revolute, simIK.jointtype_prismatic and simIK.jointtype_spherical.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>jointHandle</strong>: the handle of the joint.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.doesObjectExist">simIK.doesObjectExist</a>, <a href="#simIK.createJoint">simIK.createDummy</a>, <a href="#simIK.eraseObject">simIK.eraseObject</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.doesObjectExist" id="simIK.doesObjectExist"></a>simIK.doesObjectExist</h3>
<table class="apiTable">

<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Checks whether an object exists, based on its name.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">bool result=simIK.doesObjectExist(number environmentHandle,string objectName)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>objectName</strong>: the name of the object.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>result</strong>: true if the object exists.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.doesIkGroupExist" id="simIK.doesIkGroupExist"></a>simIK.doesIkGroupExist</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Checks whether an IK group exists, based on its name.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">bool result=simIK.doesIkGroupExist(number environmentHandle,string ikGroupName)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupName</strong>: the name of the IK group.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>result</strong>: true if the IK group exists.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.duplicateEnvironment" id="simIK.duplicateEnvironment"></a>simIK.duplicateEnvironment</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Duplicates an IK environment. Useful when operating on an environment while leaving the original environment unchanged.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number newEnvironmentHandle=simIK.duplicateEnvironment(number environmentHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>newEnvironmentHandle</strong>: the handle of the duplicated environment.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.eraseEnvironment">simIK.eraseEnvironment</a>, <a href="#simIK.createEnvironment">simIK.createEnvironment</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.eraseEnvironment" id="simIK.eraseEnvironment"></a>simIK.eraseEnvironment</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Erases an IK environment.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.eraseEnvironment(number environmentHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.eraseObject" id="simIK.eraseObject"></a>simIK.eraseObject</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Erases an object.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.eraseObject(number environmentHandle,number objectHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>objectHandle</strong>: handle of the object.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a>, <a href="#simIK.createDummy">simIK.createDummy</a>, <a href="#simIK.createJoint">simIK.createJoint</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.generatePath" id="simIK.generatePath"></a>simIK.generatePath</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Generates a path that drives the IK tip onto its IK target, in a straight line (i.e. shortest path in Cartesian space). The function returns a path in the configuration space if the operation was successful. A reason for a non-successful operation can be: there are some forbidden poses/configurations on the way, or some of the configuration points cannot be reached (e.g. out of reach, or due to joint limits). The IK environment remains unchanged.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">table configurationList=simIK.generatePath(number environmentHandle,table ikGroupHandle,table jointHandles,number tipHandle,number pathPointCount,function validationCallback=nil,auxData=nil</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the IK group handle.</div>
<div><strong>jointHandles</strong>: a table that specifies the joint handles for the joints we wish to retrieve the values calculated by the IK.</div>
<div><strong>tipHandle</strong>: the handle of the tip object.</div>
<div><strong>pathPointCount</strong>: the desired number of path points. Each path point contains a joint configuration. A minimum of two path points is required.</div>
<div><strong>validationCallback</strong>: an optional callback function. The callback function takes as input arguments proposed joint values (i.e. a configuration) and  <strong>auxData</strong>, and as return value whether the configuration is valid (e.g. is not colliding).</div>
<div><strong>auxData</strong>: auxiliary data that will be handed to the validation callback.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>configurationList</strong>: a table that contains configurations (in row-major order) that will bring the IK tip onto its IK target.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.duplicateEnvironment">simIK.duplicateEnvironment</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getAlternateConfigs" id="simIK.getAlternateConfigs"></a>simIK.getAlternateConfigs</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Useful when called after <a href="#simIK.getConfigForTipPose">simIK.getConfigForTipPose</a>: generates alternative manipulator configurations, for a same end-effector pose, for a manipulator that has revolute joints with a range larger than 360 degrees. The original submitted configuration will be part of the returned configurations. The IK environment remains unchanged.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">table configurations=simIK.getAlternateConfigs(number environmentHandle,table jointHandles,table lowLimits=nil,table ranges=nil)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandles</strong>: a table with the handles of the manipulator joints.</div>
<div><strong>lowLimits</strong>: a table with joint low limit values for each specified joint. This can be useful when you wish to explore a sub-set of the joint's intervals.</div>
<div><strong>ranges</strong>: a table with joint range values for each specified joint. This can be useful when you wish to explore a sub-set of the joint's intervals. If the range value is 0, then the lowLimit and range values are taken from the joint's properties. If the range value is negative, then the search interval will be centered around the current joint position, with an extent of (-range).</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>configurations</strong>: a table containing configurations (in row-major order) that are equivalent to the specified inputConfig, in terms of end-effector pose.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getConfigForTipPose">simIK.getConfigForTipPose</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getConfigForTipPose" id="simIK.getConfigForTipPose"></a>simIK.getConfigForTipPose</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Searches for a manipulator configuration that matches the target dummy position/orientation in space. Search is randomized. One should call <a href="#simIK.getAlternateConfigs">simIK.getAlternateConfigs</a> for each returned configuration, if some revolute joints of the manipulator have a range of more than 360 degrees, in order to generate some equivalent poses but alternate configurations. The IK environment remains unchanged.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">table jointPositions=simIK.getConfigForTipPose(number environmentHandle,number ikGroupHandle,table jointHandles,number thresholdDist=0.1,number maxTime=0.5,table_4 metric={1,1,1,0.1},function validationCallback=nil,auxData=nil,table jointOptions={},table lowLimits={},table ranges={})</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
<div><strong>jointHandles</strong>: a table that specifies the joint handles for the joints we wish to retrieve the values calculated by the IK.</div>
<div><strong>thresholdDist</strong>: a distance indicating when IK should be computed in order to try to bring the tip onto the target: since the search algorithm proceeds by generating random configurations, many of them produce a tip pose that is too far from the target pose to run IK successfully. Choosing a large value will result in slow calculations, choosing a small value might produce a smaller subset of solutions. Distance between two poses is calculated using a metric (see metric argument below).</div>
<div><strong>maxTime</strong>: the upper time limit, in seconds, after which the function returns.</div>
<div><strong>metric</strong>: a table to 4 values indicating a metric used to compute pose-pose distances: distance=sqrt((dx*metric[1])^2+(dy*metric[2])^2+(dz*metric[3])^2+(angle*metric[4])^2).</div>
<div><strong>validationCallback</strong>: an optional callback function. The callback function takes as input arguments the proposed joint values (i.e. a configuration) and  <strong>auxData</strong>, and as return value whether the configuration is valid (e.g. is not colliding).</div>
<div><strong>auxData</strong>: auxiliary data that will be handed to the validation callback.</div>
<div><strong>jointOptions</strong>: a table with bit-coded values corresponding to each specified joint handle. Bit 0 (i.e. 1) indicates the corresponding joint is dependent of another joint.</div>
<div><strong>lowLimits</strong>: a table with joint low limit values for each specified joint. This can be useful when you wish to explore a sub-set of the joint's intervals.</div>
<div><strong>ranges</strong>: a table with joint range values for each specified joint. This can be useful when you wish to explore a sub-set of the joint's intervals. If the range value is 0, then the lowLimit and range values are taken from the joint's properties. If the range value is negative, then the search interval will be centered around the current joint position, with an extent of (-range).</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>jointPositions</strong>: a table that contains the IK calculated joint values, as specified by the jointHandles table, if a valid configuration was found.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.duplicateEnvironment">simIK.duplicateEnvironment</a>, <a href="#simIK.getAlternateConfigs">simIK.getAlternateConfigs</a>, <a href="#simIK.computeJacobian">simIK.computeJacobian</a>, <a href="#simIK.getJacobian">simIK.getJacobian</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getIkElementBase" id="simIK.getIkElementBase"></a>simIK.getIkElementBase</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the base object of an IK element.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number baseHandle,number constraintsBaseHandle=simIK.getIkElementBase(number environmentHandle,number ikGroupHandle,number elementHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
<div><strong>elementHandle</strong>: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>baseHandle</strong>: the handle of the base object, or -1 if the world is the base.</div>
<div><strong>constraintsBaseHandle</strong>: the handle of the constraints base object, relative to which the constraints are specified. Returns -1 if the constraints are relative to the base object.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setIkElementBase">simIK.setIkElementBase</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getIkElementConstraints" id="simIK.getIkElementConstraints"></a>simIK.getIkElementConstraints</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the constraints of an IK element.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number constraints=simIK.getIkElementConstraints(number environmentHandle,number ikGroupHandle,number elementHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
<div><strong>elementHandle</strong>: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>constraints</strong>: the constraints. A bit-combination of following is possible: simIK.constraint_x, simIK.constraint_y, simIK.constraint_z, simIK.constraint_alpha_beta, simIK.constraint_gamma.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setIkElementConstraints">simIK.setIkElementConstraints</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getIkElementFlags" id="simIK.getIkElementFlags"></a>simIK.getIkElementFlags</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves various flags of an IK element.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number flags=simIK.getIkElementFlags(number environmentHandle,number ikGroupHandle,number elementHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
<div><strong>elementHandle</strong>: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>flags</strong>: bit-coded flags: bit0 set(1)=the enabled state of the ik element.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setIkElementFlags">simIK.setIkElementFlags</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getIkElementPrecision" id="simIK.getIkElementPrecision"></a>simIK.getIkElementPrecision</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the precision settings of an IK element.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">table_2 precision=simIK.getIkElementPrecision(number environmentHandle,number ikGroupHandle,number elementHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
<div><strong>elementHandle</strong>: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>precision</strong>: a table with the linear and angular precision.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setIkElementPrecision">simIK.setIkElementPrecision</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getIkElementWeights" id="simIK.getIkElementWeights"></a>simIK.getIkElementWeights</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the desired linear and angular resolution weights of an IK element.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">table_2 weights=simIK.getIkElementWeights(number environmentHandle,number ikGroupHandle,number elementHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
<div><strong>elementHandle</strong>: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>weights</strong>: a table with the linear and angular resolution weights.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setIkElementWeights">simIK.setIkElementWeights</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getIkGroupCalculation" id="simIK.getIkGroupCalculation"></a>simIK.getIkGroupCalculation</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves calculation properties for an IK group.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number method,number damping,number maxIterations=simIK.getIkGroupCalculation(number environmentHandle,number ikGroupHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>method</strong>: the resolution method. Possible values are simIK.method_pseudo_inverse (features a tiny bit of hard-coded damping), simIK.method_undamped_pseudo_inverse, simIK.method_damped_least_squares and simIK.method_jacobian_transpose.</div>
<div><strong>damping</strong>: the damping, in case the resolution method is simIK.method_damped_least_squares.</div>
<div><strong>maxIterations</strong>: the maximum number of iterations.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setIkGroupCalculation">simIK.setIkGroupCalculation</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getIkGroupFlags" id="simIK.getIkGroupFlags"></a>simIK.getIkGroupFlags</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves flags of an IK group.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number flags=simIK.getIkGroupFlags(number environmentHandle,number ikGroupHandle))</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>flags</strong>: the flags of the IK group. bit0 set (i.e. 1)=group is enabled, bit1 set (i.e. 2)=max. step sizes are ignored, bit2 set (i.e. 4)=restore joints if target position not reached, bit3 set (i.e. 8)=restore joints if target orientation not reached.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setIkGroupFlags">simIK.setIkGroupFlags</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getIkGroupHandle" id="simIK.getIkGroupHandle"></a>simIK.getIkGroupHandle</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the handle of an IK group based on its name.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number ikGroupHandle=simIK.getIkGroupHandle(number environmentHandle,string ikGroupName)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupName</strong>: the name of the IK group.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.doesIkGroupExist">simIK.doesIkGroupExist</a>, <a href="#simIK.createIkGroup">simIK.createIkGroup</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getJacobian" id="simIK.getJacobian"></a>simIK.getJacobian</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the Jacobian previously computed via <a href="#simIK.computeJacobian">simIK.computeJacobian</a>.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">table jacobian,table_2 matrixSize=simIK.getJacobian(number environmentHandle,number ikGroupHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>jacobian</strong>: a table with the jacobian values.</div>
<div><strong>matrixSize</strong>: a table containing the sizes (row count (i.e. number of DoFs) and column count) of the Jacobian matrix.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.computeJacobian">simIK.computeJacobian</a>, <a href="#simIK.getManipulability">simIK.getManipulability</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getJointDependency" id="simIK.getJointDependency"></a>simIK.getJointDependency</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves information about a possible joint dependency.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number depJointHandle,number offset,number mult=simIK.getJointDependency(number environmentHandle,number jointHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>depJointHandle</strong>: the handle of the dependency joint.</div>
<div><strong>offset</strong>: the offset. We have joint position = dependency joint position * mult + offset.</div>
<div><strong>mult</strong>: the multiplication factor. We have joint position = dependency joint position * mult + offset.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setJointDependency">simIK.setJointDependency</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getJointIkWeight" id="simIK.getJointIkWeight"></a>simIK.getJointIkWeight</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the IK weight of a joint, i.e. the weight it has during IK resolution.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number weight=simIK.getJointIkWeight(number environmentHandle,number jointHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>weight</strong>: the IK weight.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setJointIkWeight">simIK.setJointIkWeight</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getJointInterval" id="simIK.getJointInterval"></a>simIK.getJointInterval</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the joint limits.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">bool cyclic,table_2 interval=simIK.getJointInterval(number environmentHandle,number jointHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>cyclic</strong>: whether the joint is cyclic (has no limits).</div>
<div><strong>interval</strong>: a table with two values: the joint lower limit, and the joint range (i.e. joint upper limit = joint lower limit + joint range)</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setJointInterval">simIK.setJointInterval</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getJointMatrix" id="simIK.getJointMatrix"></a>simIK.getJointMatrix</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the intrinsic transformation matrix of a joint.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">table_12 matrix=simIK.getJointMatrix(number environmentHandle,number jointHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>matrix</strong>: a table of 12 numbers representing the transformation matrix (the last row of the 4x4 matrix (0,0,0,1) is not returned).</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setSphericalJointMatrix">simIK.setSphericalJointMatrix</a>, <a href="#simIK.getJointPosition">simIK.getJointPosition</a>, <a href="#simIK.getJointTransformation">simIK.getJointTransformation</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getJointMaxStepSize" id="simIK.getJointMaxStepSize"></a>simIK.getJointMaxStepSize</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the maximum step size of a joint.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number stepSize=simIK.getJointMaxStepSize(number environmentHandle,number jointHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>stepSize</strong>: the maximum step size.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setJointMaxStepSize">simIK.setJointMaxStepSize</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getJointMode" id="simIK.getJointMode"></a>simIK.getJointMode</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the joint mode.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number jointMode=simIK.getJointMode(number environmentHandle,number jointHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>jointMode</strong>: the joint mode. Possible values are: simIK.jointmode_passive, simIK.jointmode_ik, simIK.jointmode_dependent, simIK.jointmode_force</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setJointMode">simIK.setJointMode</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getJointPosition" id="simIK.getJointPosition"></a>simIK.getJointPosition</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the position (linear or angular) of a joint.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number position=simIK.getJointPosition(number environmentHandle,number jointHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>position</strong>: the position.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setJointPosition">simIK.setJointPosition</a>, <a href="#simIK.getJointMatrix">simIK.getJointMatrix</a>, <a href="#simIK.getJointTransformation">simIK.getJointTransformation</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getJointScrewPitch" id="simIK.getJointScrewPitch"></a>simIK.getJointScrewPitch</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the screw pitch of a revolute joint.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number pitch=simIK.getJointScrewPitch(number environmentHandle,number jointHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>pitch</strong>: the screw pitch of the joint. A pitch value of zero represents a revolute joint, a value different from zero represents a screw.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setJointScrewPitch">simIK.setJointScrewPitch</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getJointTransformation" id="simIK.getJointTransformation"></a>simIK.getJointTransformation</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the intrinsic transformation of a joint.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">table_3 position,table_4 quaternion,table_3 euler=simIK.getJointTransformation(number environmentHandle,number jointHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>position</strong>: the translation of the joint.</div>
<div><strong>quaternion</strong>: the rotation of the joint, expressed as quaternion (x,y,z,w).</div>
<div><strong>euler</strong>: the rotation of the joint, expressed as Euler angles (alpha,beta,gamma).</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setSphericalJointRotation">simIK.setSphericalJointRotation</a>, <a href="#simIK.getJointPosition">simIK.getJointPosition</a>, <a href="#simIK.getJointMatrix">simIK.getJointMatrix</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getJointType" id="simIK.getJointType"></a>simIK.getJointType</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the joint type.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number jointType=simIK.getJointType(number environmentHandle,number jointHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>jointType</strong>: the joint type. Possible values are: simIK.jointtype_revolute, simIK.jointtype_prismatic and simIK.jointtype_spherical</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createJoint">simIK.createJoint</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getLinkedDummy" id="simIK.getLinkedDummy"></a>simIK.getLinkedDummy</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the handle of a dummy linked to this one.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number linkedDummyHandle=simIK.getLinkedDummy(number environmentHandle,number dummyHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>dummyHandle</strong>: the handle of the dummy object.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>linkedDummyHandle</strong>: the handle of the linked dummy object. Is -1 if no dummy object is linked to this one.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setLinkedDummy">simIK.setLinkedDummy</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getManipulability" id="simIK.getManipulability"></a>simIK.getManipulability</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the manipulability value ( sqrt(det(J*JT)) ) of the Jacobian previously computed via <a href="#simIK.computeJacobian">simIK.computeJacobian</a>.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number manipulability=simIK.getManipulability(number environmentHandle,number ikGroupHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>manipulability</strong>: the manipulability value.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.computeJacobian">simIK.computeJacobian</a>, <a href="#simIK.getJacobian">simIK.getJacobian</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getObjectHandle" id="simIK.getObjectHandle"></a>simIK.getObjectHandle</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the handle of an object based on its name.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number objectHandle=simIK.getObjectHandle(number environmentHandle,string objectName)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>objectName</strong>: the name of the object.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>objectHandle</strong>: the object handle.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.doesObjectExist">simIK.doesObjectExist</a>, <a href="#simIK.createDummy">simIK.createDummy</a>, <a href="#simIK.createJoint">simIK.createJoint</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getObjectMatrix" id="simIK.getObjectMatrix"></a>simIK.getObjectMatrix</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the transformation matrix of an object. If the object is a joint object, the matrix does not include the joint's intrinsic transformation.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">table_12 matrix=simIK.getObjectMatrix(number environmentHandle,number objectHandle,number relativeToObjectHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>objectHandle</strong>: the handle of the object.</div>
<div><strong>relativeToObjectHandle</strong>: the handle of an object relative to which we want the matrix expressed. Otherwise, specify -1 if you want the absolute matrix, or simIK.handle_parent if you want the matrix relative to the parent object.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>matrix</strong>: a table of 12 numbers representing the transformation matrix (the last row of the 4x4 matrix (0,0,0,1) is not returned)</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setObjectMatrix">simIK.setObjectMatrix</a>, <a href="#simIK.getObjectTransformation">simIK.getObjectTransformation</a>, <a href="#simIK.getJointTransformation">simIK.getJointTransformation</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getObjectParent" id="simIK.getObjectParent"></a>simIK.getObjectParent</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves an object's parent handle.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number parentObjectHandle=simIK.getObjectParent(number environmentHandle,number objectHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>objectHandle</strong>: the handle of the object.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>parentObjectHandle</strong>: the returned handle of the parent, or -1 if the object has no parent.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setObjectParent">simIK.setObjectParent</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getObjects" id="simIK.getObjects"></a>simIK.getObjects</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Allows to loop through all objects in the environment.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number objectHandle,string objectName,bool isJoint,number jointType=simIK.getObjects(number environmentHandle,number index)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>index</strong>: the zero-based index. Start at 0, and increment until there is no return values anymore, in order to loop through all objects in the environment.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>objectHandle</strong>: the handle of the object, or nil if there is no object at the specified index.</div>
<div><strong>objectName</strong>: the name of the object.</div>
<div><strong>isJoint</strong>: whether the object is a joint.</div>
<div><strong>jointType</strong>: the type of joint, if the object at the specified index is a joint. Possible values are simIK.jointtype_revolute, simIK.jointtype_prismatic or simIK.jointtype_spherical.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.getObjectHandle">simIK.getObjectHandle</a>, <a href="#simIK.doesObjectExist">simIK.doesObjectExist</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.getObjectTransformation" id="simIK.getObjectTransformation"></a>simIK.getObjectTransformation</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Retrieves the transformation (position and quaternion/euler angles) of an object. If the object is a joint object, the transformation does not include the joint's intrinsic transformation.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">table_3 position,table_4 quaternion,table_3 euler=simIK.getObjectTransformation(number environmentHandle,number objectHandle,number relativeToObjectHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>objectHandle</strong>: the handle of the object.</div>
<div><strong>relativeToObjectHandle</strong>: the handle of an object relative to which we want the transformation expressed. Otherwise, specify -1 if you want the absolute transformation, or simIK.handle_parent if you want the transformation relative to the parent object.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>position</strong>: the position of the object.</div>
<div><strong>quaternion</strong>: the orientation of the object, expressed as quaternion (x,y,z,w).</div>
<div><strong>euler</strong>: the orientation of the object, expressed as Euler angles (alpha,beta,gamma).</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.setObjectTransformation">simIK.setObjectTransformation</a>, <a href="#simIK.getObjectMatrix">simIK.getObjectMatrix</a>, <a href="#simIK.getJointTransformation">simIK.getJointTransformation</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.handleIkGroup" id="simIK.handleIkGroup"></a>simIK.handleIkGroup</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Handles (i.e. computes/resolves) an IK group.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">number result=simIK.handleIkGroup(number environmentHandle,number ikGroupHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group, or simIK.handle_all to handle all IK groups.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>result</strong>: the resolution result, in return. Possible values are simIK.ikresult_not_performed, simIK.ikresult_success, or simIK.ikresult_fail</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.computeJacobian">simIK.computeJacobian</a>, <a href="#simIK.getConfigForTipPose">simIK.getConfigForTipPose</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.load" id="simIK.load"></a>simIK.load</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Loads kinematic content previously exported in the CoppeliaSim application. Make sure that the environment is empty before calling this function.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.load(number environmentHandle,string data)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>data</strong>: a buffer with the kinematic content.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.save">simIK.save</a>, <a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.eraseEnvironment">simIK.eraseEnvironment</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.save" id="simIK.save"></a>simIK.save</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Saves the kinematic content of an IK environment.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">string data=simIK.save(number environmentHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
<div><strong>data</strong>: the exported data.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.load">simIK.load</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setIkElementBase" id="simIK.setIkElementBase"></a>simIK.setIkElementBase</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets the base object of an IK element.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setIkElementBase(number environmentHandle,number ikGroupHandle,number elementHandle,number baseHandle,number constraintsBaseHandle=-1)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
<div><strong>elementHandle</strong>: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).</div>
<div><strong>baseHandle</strong>: the handle of the base object, or -1 if the world is the base.</div>
<div><strong>constraintsBaseHandle</strong>: the handle of the constraints base object, relative to which the constraints are specified. Set to -1 to have the constraints relative to the base object.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getIkElementBase">simIK.getIkElementBase</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setIkElementConstraints" id="simIK.setIkElementConstraints"></a>simIK.setIkElementConstraints</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets the constraints of an IK element.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setIkElementConstraints(number environmentHandle,number ikGroupHandle,number elementHandle,number constraints)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
<div><strong>elementHandle</strong>: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).</div>
<div><strong>constraints</strong>: the constraints. Bit-combine following: simIK.constraint_x, simIK.constraint_y, simIK.constraint_z, simIK.constraint_alpha_beta, simIK.constraint_gamma (simIK.constraint_gamma should only be set if simIK.constraint_alpha_beta is also set). For convenience we also have simIK.constraint_position=simIK.constraint_x|simIK.constraint_y|simIK.constraint_z, simIK.constraint_orientation=simIK.constraint_alpha_beta|simIK.constraint_gamma, and simIK.constraint_pose=simIK.constraint_position|simIK.constraint_orientation.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getIkElementConstraints">simIK.getIkElementConstraints</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setIkElementFlags" id="simIK.setIkElementFlags"></a>simIK.setIkElementFlags</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets various flags of an IK element.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setIkElementFlags(number environmentHandle,number ikGroupHandle,number elementHandle,number flags)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
<div><strong>elementHandle</strong>: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).</div>
<div><strong>flags</strong>: bit-coded flags: bit0 set (1)=the enabled state of the IK element.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getIkElementFlags">simIK.getIkElementFlags</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setIkElementPrecision" id="simIK.setIkElementPrecision"></a>simIK.setIkElementPrecision</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets the desired precision of an IK element.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setIkElementPrecision(number environmentHandle,number ikGroupHandle,number elementHandle,table_2 precision)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
<div><strong>elementHandle</strong>: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).</div>
<div><strong>precision</strong>: a table with two values for the linear and angular precision.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getIkElementPrecision">simIK.getIkElementPrecision</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setIkElementWeights" id="simIK.setIkElementWeights"></a>simIK.setIkElementWeights</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets the desired linear and angular resolution weights of an IK element.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setIkElementWeights(number environmentHandle,number ikGroupHandle,number elementHandle,table_2 weights)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
<div><strong>elementHandle</strong>: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).</div>
<div><strong>weights</strong>: a table with two values for the linear and angular resolution weight.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getIkElementWeights">simIK.getIkElementWeights</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setIkGroupCalculation" id="simIK.setIkGroupCalculation"></a>simIK.setIkGroupCalculation</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets calculation properties for an IK group.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setIkGroupCalculation(number environmentHandle,number ikGroupHandle,number method,number damping,number maxIterations)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
<div><strong>method</strong>: the resolution method. Possible values are simIK.method_pseudo_inverse (features a tiny bit of hard-coded damping), simIK.method_undamped_pseudo_inverse, simIK.method_damped_least_squares and simIK.method_jacobian_transpose.</div>
<div><strong>damping</strong>: the damping, in case the resolution method is simIK.method_damped_least_squares.</div>
<div><strong>maxIterations</strong>: the maximum number of iterations.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getIkGroupCalculation">simIK.getIkGroupCalculation</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setIkGroupFlags" id="simIK.setIkGroupFlags"></a>simIK.setIkGroupFlags</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets flags of an IK group.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setIkGroupFlags(number environmentHandle,number ikGroupHandle,number flags)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>ikGroupHandle</strong>: the handle of the IK group.</div>
<div><strong>flags</strong>: the flags of the IK group. bit0 set (i.e. 1)=group is enabled, bit1 set (i.e. 2)=max. step sizes are ignored, bit2 set (i.e. 4)=restore joints if target position not reached, bit3 set (i.e. 8)=restore joints if target orientation not reached.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getIkGroupFlags">simIK.getIkGroupFlags</a>, <a href="#simIK.getIkGroupHandle">simIK.getIkGroupHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setJointDependency" id="simIK.setJointDependency"></a>simIK.setJointDependency</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets information about a possible dependent joint.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setJointDependency(number environmentHandle,number jointHandle,number depJointHandle,number offset=0,number mult=1)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
<div><strong>depJointHandle</strong>: the handle of the joint, this joint is dependent of. -1 to disable.</div>
<div><strong>offset</strong>: the offset. We have joint position = dependency joint position * mult + offset</div>
<div><strong>mult</strong>: the multiplication factor. We have joint position = dependency joint position * mult + offset</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getJointDependency">simIK.getJointDependency</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setJointIkWeight" id="simIK.setJointIkWeight"></a>simIK.setJointIkWeight</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets the IK weight of a joint, i.e. the weight it has during IK resolution.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setJointIkWeight(number environmentHandle,number jointHandle,number weight)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
<div><strong>weight</strong>: the IK weight.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getJointIkWeight">simIK.getJointIkWeight</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setJointInterval" id="simIK.setJointInterval"></a>simIK.setJointInterval</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets the joint limits.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setJointInterval(number environmentHandle,number jointHandle,bool cyclic,table_2 interval={})</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
<div><strong>cyclic</strong>: whether the joint is cyclic (has no limits). Only revolute joints can be cyclic.</div>
<div><strong>interval</strong>: a table with two values: the joint lower limit, and the joint range (i.e. joint upper limit = joint lower limit + joint range)</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getJointInterval">simIK.getJointInterval</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setJointMaxStepSize" id="simIK.setJointMaxStepSize"></a>simIK.setJointMaxStepSize</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets the maximum step size of a joint.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setJointMaxStepSize(number environmentHandle,number jointHandle,number stepSize)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
<div><strong>stepSize</strong>: the maximum step size.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getJointMaxStepSize">simIK.getJointMaxStepSize</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setJointMode" id="simIK.setJointMode"></a>simIK.setJointMode</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets the joint mode.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setJointMode(number environmentHandle,number jointHandle,number jointMode)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
<div><strong>jointMode</strong>: the joint mode. Allowed values are: simIK.jointmode_passive, simIK.jointmode_ik, simIK.jointmode_dependent</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getJointMode">simIK.getJointMode</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setJointPosition" id="simIK.setJointPosition"></a>simIK.setJointPosition</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets the position (linear or angular) of a joint.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setJointPosition(number environmentHandle,number jointHandle,number position)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
<div><strong>position</strong>: the position.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getJointPosition">simIK.getJointPosition</a>, <a href="#simIK.setSphericalJointMatrix">simIK.setSphericalJointMatrix</a>, <a href="#simIK.setSphericalJointRotation">simIK.setSphericalJointRotation</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setJointScrewPitch" id="simIK.setJointScrewPitch"></a>simIK.setJointScrewPitch</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets the screw pitch, in case of a revolute joint.</td>
</tr>

<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setJointScrewPitch(number environmentHandle,number jointHandle,number pitch)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
<div><strong>pitch</strong>: the screw pitch of the joint. A pitch value of zero represents a revolute joint, a value different from zero represents a screw.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getJointScrewPitch">simIK.getJointScrewPitch</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setLinkedDummy" id="simIK.setLinkedDummy"></a>simIK.setLinkedDummy</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Links this dummy object to another dummy object, or detaches it from another dummy object.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setLinkedDummy(number environmentHandle,number dummyHandle,number linkedDummyHandle)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>dummyHandle</strong>: the handle of the dummy object.</div>
<div><strong>linkedDummyHandle</strong>: the handle of the dummy object to be linked, or -1 to detach this dummy object from a linked dummy object.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getLinkedDummy">simIK.getLinkedDummy</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setObjectMatrix" id="simIK.setObjectMatrix"></a>simIK.setObjectMatrix</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets the transformation matrix of an object. If the object is a joint object, the matrix does not include the joint's intrinsic transformation.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setObjectMatrix(number environmentHandle,number objectHandle,number relativeToObjectHandle,table_12 matrix)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>objectHandle</strong>: the handle of the object.</div>
<div><strong>relativeToObjectHandle</strong>: the handle of an object relative to which the matrix is expressed. Otherwise, specify -1 if you specify the absolute matrix, or simIK.handle_parent if you specify the matrix relative to the parent object.</div>
<div><strong>matrix</strong>: a table of 12 values representing the transformation matrix (the last row of the 4x4 matrix (0,0,0,1) is omitted)</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getObjectMatrix">simIK.getObjectMatrix</a>, <a href="#simIK.setObjectTransformation">simIK.setObjectTransformation</a>, <a href="#simIK.setJointPosition">simIK.setJointPosition</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setObjectParent" id="simIK.setObjectParent"></a>simIK.setObjectParent</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets the parent of an object.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setObjectParent(number environmentHandle,number objectHandle,number parentObjectHandle, bool keepInPlace=true)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>objectHandle</strong>: the handle of the object.</div>
<div><strong>parentObjectHandle</strong>: the desired parent object, set -1 for no parent.</div>
<div><strong>keepInPlace</strong>: if true, the object will stay in place, otherwise, it will keep its local transformation.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getObjectParent">simIK.getObjectParent</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setObjectTransformation" id="simIK.setObjectTransformation"></a>simIK.setObjectTransformation</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets the transformation (position and quaternion/Euler angles) of an object. If the object is a joint object, the transformation does not include the joint's intrinsic transformation.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setObjectTransformation(number environmentHandle,number objectHandle,number relativeToObjectHandle,table_3 position,table eulerOrQuaternion)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>objectHandle</strong>: the handle of the object.</div>
<div><strong>relativeToObjectHandle</strong>: the handle of an object relative to which the transformation is expressed. Otherwise, specify -1 if you specify the absolute transformation, or simIK.handle_parent if you specify the transformation relative to the parent object.</div>
<div><strong>position</strong>: the position component of the transformation.</div>
<div><strong>eulerOrQuaternion</strong>: the orientation component of the transformation. If 3 values are specified, then they will be interpreted as Euler angles (alpha,beta,gamma). If 4 values are specified, they will be interpreted as quaternion values (x,y,z,w).</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getObjectTransformation">simIK.getObjectTransformation</a>, <a href="#simIK.setObjectMatrix">simIK.setObjectMatrix</a>, <a href="#simIK.setJointPosition">simIK.setJointPosition</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setSphericalJointMatrix" id="simIK.setSphericalJointMatrix"></a>simIK.setSphericalJointMatrix</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets the rotation transformation matrix of a spherical joint.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setSphericalJointMatrix(number environmentHandle,number jointHandle,table_12 matrix)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
<div><strong>matrix</strong>: a table of 12 values representing the transformation matrix (the last row of the 4x4 matrix (0,0,0,1) is omitted). The translation part in the matrix will be ignored.</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getJointMatrix">simIK.getJointMatrix</a>, <a href="#simIK.setJointPosition">simIK.setJointPosition</a>, <a href="#simIK.setSphericalJointRotation">simIK.setSphericalJointRotation</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>
<br>

<h3 class="subsectionBar">
<a name="simIK.setSphericalJointRotation" id="simIK.setSphericalJointRotation"></a>simIK.setSphericalJointRotation</h3>
<table class="apiTable">
<tr class="apiTableTr">
<td class="apiTableLeftDescr">Description</td>
<td class="apiTableRightDescr">Sets the rotation transformation of a spherical joint.</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLSyn">Synopsis</td>
<td class="apiTableRightLSyn">simIK.setSphericalJointRotation(number environmentHandle,number jointHandle,table eulerOrQuaternion)</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLParam">Arguments</td>
<td class="apiTableRightLParam">
<div><strong>environmentHandle</strong>: the handle of the environment.</div>
<div><strong>jointHandle</strong>: the handle of the joint.</div>
<div><strong>eulerOrQuaternion</strong>: the rotation transformation to apply. If 3 values are specified, they will be interpreted as Euler angles (alpha,beta,gamma). If 4 values are specified, they will be interpreted as quaternion values (x,y,z,w).</div>
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftLRet">Return values</td>
<td class="apiTableRightLRet">
</td>
</tr>
<tr class="apiTableTr">
<td class="apiTableLeftDescr">See also</td>
<td class="apiTableRightDescr"><a href="#simIK.createEnvironment">simIK.createEnvironment</a>, <a href="#simIK.getJointTransformation">simIK.getJointTransformation</a>, <a href="#simIK.setSphericalJointMatrix">simIK.setSphericalJointMatrix</a>, <a href="#simIK.setJointPosition">simIK.setJointPosition</a>, <a href="#simIK.getObjectHandle">simIK.getObjectHandle</a></td>
</tr>
</table>

<br>
</td></tr>
</table></div>
<script type="text/javascript">
//
view = getParameterByName('view')
document.getElementById('alphabetical').style.display = view == 'alphabetical' ? 'table-cell' : 'none'
document.getElementById('category').style.display = view == 'category' ? 'table-cell' : 'none'
document.getElementById('commands').style.display = view == null ? 'table-cell' : 'none'
document.getElementById('enums').style.display = view == null ? 'table-cell' : 'none'
document.getElementById('structs').style.display = view == null ? 'table-cell' : 'none'
document.getElementById('scriptFunctions').style.display = view == null ? 'table-cell' : 'none'
//
                </script>
</body>
</html>
